package com.ruoyi.system.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 施工阶段配置DO（对应t_construction_stage表）
 */
@Data
@TableName("t_construction_stage")
public class ConstructionStageDO {

    /** 主键ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 阶段编号：固定阶段前缀“GD”，自定义阶段前缀“ZD” */
    @TableField("stage_code")
    private String stageCode;

    /** 阶段名称（固定阶段不可修改，自定义阶段不可与固定阶段重复） */
    @TableField("stage_name")
    private String stageName;

    /** 阶段类型：1-固定阶段，2-自定义阶段 */
    @TableField("stage_type")
    private Integer stageType;

    /** 是否必选：0-否，1-是 */
    @TableField("is_required")
    private Integer isRequired;

    /** 排序号（1-999，数值越小排序越靠前） */
    @TableField("sort_num")
    private Integer sortNum;

    /** 阶段状态：1-启用，2-停用 */
    @TableField("stage_status")
    private Integer stageStatus;

    /** 设计师ID（仅自定义阶段有效） */
    @TableField("designer_id")
    private String designerId;

    /** 获取关联项目的数量 */
    @TableField(exist = false)
    private Integer associatedProjectCount;

    /** 备注 */
    @TableField("remark")
    private String remark;

    /** 创建人 */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新人 */
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /** 更新时间 */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /** 逻辑删除：0-未删除，1-已删除（固定阶段不可删除） */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;

    @TableField(exist = false)
    private List<ConstructionProjectItemDO> projectItems;
}